using System;
using System.IO;

namespace Phoenix.Abstractions
{
    public interface IIsolatedStorageFile : IDisposable
    {
        long Quota { get; }

        long AvailableFreeSpace { get; }

        void Remove();

        bool IncreaseQuotaTo(long newQuotaSize);

        void DeleteFile(string file);

        bool FileExists(string path);

        bool DirectoryExists(string path);

        void CreateDirectory(string dir);

        void DeleteDirectory(string dir);

        string[] GetFileNames();

        string[] GetFileNames(string searchPattern);

        string[] GetDirectoryNames();

        string[] GetDirectoryNames(string searchPattern);

        Stream OpenFile(string path, FileMode mode);

        Stream OpenFile(string path, FileMode mode, FileAccess access);

        Stream OpenFile(string path, FileMode mode, FileAccess access, FileShare share);

        Stream CreateFile(string path);
    }
}